#pragma warning(disable: 4786)

#ifndef __CXMLCONTAINERNODE_INCLUDED__
#define __CXMLCONTAINERNODE_INCLUDED__
#include "c_xml_container_node.h"
#endif

class c_xmlcontainer_list{
          
	private:	  
			 int NodeId;
			 int LastLevel;
			 int NodeId_LastLevel; // el ultimo ID del nivel anterior parent de todos los que estan abajo el nivel se controla con la funcion close_last_node el ultimo abierto es el padre 
			 int MaxLevel;
			 std::vector<c_xmlcontainer_node*> n_list;
			 c_xmlcontainer_node *tmp_node;
			 std::vector<int> last_node_list;
			 int ln_index;
	public:     
             
			 c_xmlcontainer_list(void);
			 ~c_xmlcontainer_list();
		     void Close_Last_Node(); // Al Insertar un nodo queda abierto y debera ser cerrado al encontrarse /> en el XML llamando a esta funcion
			 int Close_Node_CheckName(char * P_RName); //Cierra nodo y verifica que es el que debe ser cerrado
			 int Insert_Node(char * P_RName); // Inserta un Nodo, le coloca un ID, lo acomoda en el nivel correspondiente, lo deja abierto, le coloca el nombre pasado por Param y Devuelve el ID del nodo isertado
			 int Get_Max_NodeId();
			 int Open_Nodes();

           //  inline c_xmlcontainer_node* operator [] (int i) const{
           //         return(n_list[i]);
           //         } 
			
			inline c_xmlcontainer_node* operator [] (int i) const{
				 if (i <= (n_list.size()-1)) {return(n_list[i]);}
				 else {return (NULL);}}
                      
		 
};


